{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import pandas as pd\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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NQkJCWb9+vVRPJOu8fl85vPPPw973XnnnWbkyJEmEAgYY4zZvXu3kWTefPPNsP38fr/l0nfNiBEjzGOPPRZW9qNHj4beb2hoMFlZWea2224zW7duNb///e9NSkqK+a//+i+Lpe6aP//5z+b73/++eeONN8zOnTvNq6++ajIzM839998f2ifer9/q1atNUlKSWbFihfn73/9uZs+ebQYOHGjq6upsFy1iRUVFZuXKlWbr1q2murrafPvb3zbnn39+2N/H6667zsyePTvsWjU0NFgsdWQWLFhgLr300rDyHzx4MPT+3XffbXJyckx5ebnZtGmT+cY3vmGmTJliscSRqa+vDzu3DRs2GEnmrbfeMsbE5/Vbt26defjhh83LL79sJJlXXnkl7P1FixaZ9PR0s3btWvPhhx+aW265xYwcOdIcP348tM+3vvUtM378ePPee++Zv/71r2b06NFmxowZPV5Wx4SRoJUrV3YaRtatW2fcbrepra0NbfvVr35l0tLSjM/nM8YY85Of/MRceumlYcdNnz7dFBUV9WqZe4Lf7zdDhgwxjz32WGhb8JfZli1b7BXsLIwYMcI888wzp33/ueeeM4MGDQpdP2OMefDBB82YMWOiULqe9+STT5qRI0eGfo736zd58mQzZ86c0M+tra1m2LBhpqyszGKpekZ9fb2RZP7nf/4ntO26664z8+bNs1eos7RgwQIzfvz4Tt87cuSISUxMNH/4wx9C27Zt22YkmcrKyiiVsGfNmzfPXHDBBaF/vMX79ftqGAkEAiY7O9s89dRToW1HjhwxHo/H/P73vzfGGPPxxx8bSeaDDz4I7fPnP//ZuFwus3///h4tn2OGab5OZWWlLrvsMmVlZYW2FRUVyev16u9//3ton8LCwrDjioqKVFlZGdWydsdrr72mL774QsXFxae8d8sttygzM1NXX321XnvtNQul675Fixbp3HPP1cSJE/XUU0+FDatVVlbq2muvVVJSUmhbUVGRtm/fri+//NJGcc9KQ0ODBg8efMr2eLx+fr9fVVVVYfXJ7XarsLAwLurT12loaJCkU67X7373O2VkZGjcuHEqLS3VsWPHbBSv2z799FMNGzZMo0aN0m233aaamhpJUlVVlZqbm8Ou59ixY3X++efH5fX0+/367W9/qx/84AdhD2eN9+t3st27d6u2tjbsmqWnpys/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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(-100,100,400)\n",
    "y = [1/(1+math.e**(-x)) for x in x]\n",
    "plt.plot(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def loadDataSet():\n",
    "    dataMat = [];labelMat = []\n",
    "    fr = open('testSet.txt')\n",
    "    for line in fr.readlines():\n",
    "        lineArr = line.strip().split()\n",
    "        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])\n",
    "        labelMat.append(float(lineArr[2]))\n",
    "    return dataMat,labelMat\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(inX):\n",
    "    inX = np.array(inX)\n",
    "    return 1.0 / (1 + np.exp(-inX))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradAscent(dataMatIn,classLabels):\n",
    "    dataMatrix = np.mat(dataMatIn)\n",
    "    labelMat = np.mat(classLabels).transpose()\n",
    "    m,n = np.shape(dataMatrix)\n",
    "    alpha = 0.001\n",
    "    maxCycles = 500\n",
    "    weights = np.ones((n,1))\n",
    "    for k in range(maxCycles):\n",
    "        h = sigmoid(dataMatrix * weights)\n",
    "\n",
    "        error = (labelMat - h)\n",
    "        weights = weights + alpha * dataMatrix.transpose() * error/m\n",
    "    return weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plotBestFit(weights):\n",
    "    import matplotlib.pyplot as plt\n",
    "    dataMat,labelMat = loadDataSet()\n",
    "    dataArr = np.array(dataMat)\n",
    "    n = np.shape(dataArr)[0]\n",
    "    xcord1 = []; ycord1 = []\n",
    "    xcord2 = []; ycord2 = []\n",
    "    for i in range(n):\n",
    "        if int(labelMat[i]) == 1:\n",
    "            xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i,2])\n",
    "        else:\n",
    "            xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i,2])\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')\n",
    "    ax.scatter(xcord2, ycord2, s=30, c='green')\n",
    "    x = np.arange(-3.0, 3.0, 0.1)\n",
    "    print()\n",
    "    print(weights)\n",
    "\n",
    "    y = (-weights[0]-weights[1] * x)/weights[2]\n",
    "    ax.plot(x, y)\n",
    "    plt.xlabel('X1'); plt.ylabel('X2')\n",
    "    plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[[ 0.95492256]\n",
      " [ 0.89934415]\n",
      " [-0.25462853]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dataMat,labelMat = loadDataSet()\n",
    "dataArr = np.array(dataMat)\n",
    "weights = gradAscent(dataArr,labelMat)\n",
    "plotBestFit(weights.getA())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def stocGradAscent1(dataMatrix,calassLabels,numIter=150):\n",
    "    import matplotlib.pyplot as plt      \n",
    "    m,n = np.shape(dataMatrix)\n",
    "    weights = np.ones(n)\n",
    "    w_log = [weights]\n",
    "    for j in range(numIter):  \n",
    "        dataIndex = list(range(m))\n",
    "        for i in range(m):\n",
    "            alpha = 4/(1.0+j+i)+0.01  \n",
    "            randIndex = int(np.random.uniform(0,len(dataIndex)))\n",
    "            h = sigmoid(sum(dataMatrix[randIndex] * weights))\n",
    "            error = calassLabels[randIndex] - h\n",
    "            weights = weights + alpha * error * dataMatrix[randIndex]\n",
    "            w_log.append(weights) \n",
    "            del(dataIndex[randIndex])\n",
    "    return weights,w_log\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[ 0.95492256],\n",
       "        [ 0.89934415],\n",
       "        [-0.25462853]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataMat,labelMat = loadDataSet()\n",
    "gradAscent(dataMat,labelMat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "[15.07360693  1.2742018  -2.09968842]\n"
     ]
    },
    {
     "data": {
      "image/png": "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PYLxegSL1evR2UxQO4qlAQCAYxGEAACAYxGEEBG32621a9fK7XYbPRRT4PXowGsRjNcjGK9HMF6PYGZ4PSiWBgAAjsWMEAAAcCyCEAAAcCyCEAAAcCyCEAAAcCyCELrtq1/9qoYOHark5GQNGjRI3/nOd3T48GGjh2WIAwcO6NZbb9WIESPUr18/jRo1SmvXrlVzc7PRQzPMv/3bv2n69OlKSUlR//79jR5O3G3cuFHDhw9XcnKypk6dqrfeesvoIRni9ddf1/XXX6+8vDy5XC5t3brV6CEZpri4WJdffrnS09OVnZ2tefPmac+ePUYPyzCPPfaYLrvsskATxWnTpumPf/yjYeMhCKHbZsyYod/85jfas2eP/vM//1P79u3TN77xDaOHZYiPPvpIPp9PTzzxhD744AOtX79ejz/+uO6++26jh2aY5uZm3XjjjVq6dKnRQ4m7F154QStWrNDatWu1e/dujR8/XrNnz9aRI0eMHlrcNTY2avz48dq4caPRQzFcaWmpbrvtNr3xxht65ZVX1NLSomuvvVaNjY1GD80QQ4YM0f33369du3bpnXfe0Ze+9CV97Wtf0wcffGDIeFg+j157+eWXNW/ePDU1Nalv375GD8dwDz74oB577DF9/PHHRg/FUJs2bdIdd9yh48ePGz2UuJk6daouv/xybdiwQVLbXoX5+flatmyZVq5cafDojONyubRlyxbNmzfP6KGYwtGjR5Wdna3S0lJdffXVRg/HFAYMGKAHH3xQt956a9wfmxkh9Mqnn36q5557TtOnTycEnVZfX68BAwYYPQzEWXNzs3bt2qVZs2YFLktISNCsWbO0c+dOA0cGs6mvr5ckfk5Iam1t1fPPP6/GxkZNmzbNkDEQhNAjd911l1JTU3X++eersrJSL730ktFDMoWKigo9+uij+t73vmf0UBBndXV1am1tVU5OTtDlOTk5qqmpMWhUMBufz6c77rhDV155pS655BKjh2OY9957T2lpaXK73fr+97+vLVu26KKLLjJkLAQhSJJWrlwpl8vV6ddHH30UuP2dd96pv/3tb/rzn/+sxMRELViwQHY6y9rd10OSqqurNWfOHN14441avHixQSOPjZ68HgDOddttt+n999/X888/b/RQDDVu3DiVlZXpzTff1NKlS7Vw4UL9/e9/N2Qs1AhBUts562PHjnV6m5EjRyopKemcy6uqqpSfn68dO3YYNrUZbd19PQ4fPqxrrrlGV1xxhTZt2qSEBHv9jtGT94fTaoSam5uVkpKi3/3ud0G1MAsXLtTx48cdPWtKjVCb22+/XS+99JJef/11jRgxwujhmMqsWbM0atQoPfHEE3F/7D5xf0SYUlZWlrKysnp0rM/nkyQ1NTVFc0iG6s7rUV1drRkzZmjy5Ml6+umnbReCpN69P5wiKSlJkydPVklJSeAD3+fzqaSkRLfffruxg4Oh/H6/li1bpi1btmj79u2EoBB8Pp9hnyEEIXTLm2++qbfffltXXXWVzjvvPO3bt0+rV6/WqFGjbDMb1B3V1dW65pprNGzYMK1bt05Hjx4NXJebm2vgyIxTWVmpTz/9VJWVlWptbVVZWZkkafTo0UpLSzN2cDG2YsUKLVy4UF/4whc0ZcoUPfzww2psbNSiRYuMHlrceb1eVVRUBL7fv3+/ysrKNGDAAA0dOtTAkcXfbbfdps2bN+ull15Senp6oGYsMzNT/fr1M3h08bdq1SrNnTtXQ4cOVUNDgzZv3qzt27frT3/6kzED8gPd8O677/pnzJjhHzBggN/tdvuHDx/u//73v++vqqoyemiGePrpp/2SQn451cKFC0O+Hn/5y1+MHlpcPProo/6hQ4f6k5KS/FOmTPG/8cYbRg/JEH/5y19Cvg8WLlxo9NDiLtzPiKefftrooRnilltu8Q8bNsyflJTkz8rK8s+cOdP/5z//2bDxUCMEAAAcy37FDAAAABEiCAEAAMciCAEAAMciCAEAAMciCAEAAMciCAEAAMciCAEAAMciCAEAAMciCAEAAMciCAGwrdbWVk2fPl3/+I//GHR5fX298vPz9a//+q+SpH/+53/W5MmT5Xa7NWHCBANGCsAoBCEAtpWYmKhNmzZp27Zteu655wKXL1u2TAMGDNDatWsDl91yyy266aabjBgmAAOx+zwAWxs7dqzuv/9+LVu2TF/60pf01ltv6fnnn9fbb7+tpKQkSdLPf/5zSdLRo0f17rvvGjlcAHFGEAJge8uWLdOWLVv0ne98R++9957WrFmj8ePHGz0sACZAEAJgey6XS4899pguvPBCXXrppVq5cqXRQwJgEtQIAXCEp556SikpKdq/f7+qqqqMHg4AkyAIAbC9HTt2aP369fr973+vKVOm6NZbb5Xf7zd6WABMgCAEwNZOnDihm2++WUuXLtWMGTP0y1/+Um+99ZYef/xxo4cGwAQIQgBsbdWqVfL7/br//vslScOHD9e6dev04x//WAcOHJAkVVRUqKysTDU1Nfr8889VVlamsrIyNTc3GzhyAPHg8jM/DMCmSktLNXPmTG3fvl1XXXVV0HWzZ8/WqVOn9Oqrr2rGjBkqLS095/j9+/dr+PDhcRotACMQhAAAgGNxagwAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADgWQQgAADjW/wd0e2XZh3HyAwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dataArr,labelMat = loadDataSet()\n",
    "weights,w_log=stocGradAscent1(np.array(dataArr),labelMat)\n",
    "plotBestFit(weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f253d505840>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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8+bNZsOGDebGG280WVlZ5tixY74+Dz30kMnMzDQLFiwwa9asMZdeeqm57LLLfPurqqpMjx49TE5Ojlm/fr358MMPTevWrc2kSZN8fXbu3Gni4uLM+PHjzZYtW8wLL7xgIiIizNy5c0M63hqrVq0yHTt2NL169TJjx471tYfbWI8cOWI6dOhgfvzjH5uVK1eanTt3mnnz5pkdO3b4+kyZMsUkJiaaOXPmmI0bN5qbb77ZZGdnm9LSUl+fG264wfTu3dusWLHCfPLJJ+b88883d911l2+/2+02aWlpZvjw4Wbz5s3mjTfeMLGxsebll18O6Xiffvppk5KSYt5//32za9cu8/bbb5uWLVua559/PizG++GHH5pf//rX5p133jGSzOzZs/32h2psn376qYmIiDDPPvus2bJli3n00UdNVFSU2bRpU8jGW1hYaHJycsybb75pvvrqK7N8+XLTv39/c/HFF/t9RriMt7Z33nnH9O7d22RkZJg//elPzXa8wWSL8NG/f38zatQo33Z1dbXJyMgwubm5FlZ1dgoKCowks2TJEmPM8f/Ao6KizNtvv+3r8+WXXxpJZvny5caY4//BOJ1Ok5+f7+szbdo0k5CQYMrLy40xxvzqV78y3bt39zvWj370IzN48OBgD6mOoqIi07lzZzN//nxz1VVX+cJHOI514sSJ5vLLLz/tfq/Xa9LT083vf/97X1thYaFxuVzmjTfeMMYYs2XLFiPJrF692tfno48+Mg6Hw+zbt88YY8xf//pX06pVK9/voObYXbp0CfSQGjR06FBz3333+bXddtttZvjw4caY8BrvqV9OoRzbHXfcYYYOHepXz4ABA8yDDz4Y0DHW1tCXcY1Vq1YZSWbPnj3GmPAc7zfffGPatWtnNm/ebDp06OAXPprzeAMt7E+7VFRUaO3atcrJyfG1OZ1O5eTkaPny5RZWdnbcbrckKTk5WZK0du1aVVZW+o2va9euysrK8o1v+fLl6tmzp9LS0nx9Bg8eLI/Hoy+++MLXp/Zn1PSx4nc0atQoDR06tE494TjW9957T/369dPtt9+u1NRU9enTR6+88opv/65du5Sfn+9Xb2JiogYMGOA35qSkJPXr18/XJycnR06nUytXrvT1ufLKKxUdHe3rM3jwYG3dulVHjx4N9jB9LrvsMi1YsEDbtm2TJG3cuFHLli3TkCFDJIXfeGsL5dia0p/x2txutxwOh5KSkiSF33i9Xq9GjBihCRMmqHv37nX2h9t4z0XYh49Dhw6purra78tIktLS0pSfn29RVWfH6/Vq3LhxGjRokHr06CFJys/PV3R0tO8/5hq1x5efn1/v+Gv2NdTH4/GotLQ0GMOp16xZs7Ru3Trl5ubW2RduY5WknTt3atq0aercubPmzZunn/70pxozZoxmzJjhV3NDf37z8/OVmprqtz8yMlLJycln9HsJhUceeUR33nmnunbtqqioKPXp00fjxo3T8OHD/WoJl/HWFsqxna6PlX/nlZWVaeLEibrrrrt8D1ELt/E+88wzioyM1JgxY+rdH27jPRdN7qm2OL1Ro0Zp8+bNWrZsmdWlBEVeXp7Gjh2r+fPnKyYmxupyQsLr9apfv3763e9+J0nq06ePNm/erJdeekkjR460uLrAe+utt/T6669r5syZ6t69uzZs2KBx48YpIyMjLMeL4yorK3XHHXfIGKNp06ZZXU5QrF27Vs8//7zWrVsnh8NhdTlNXtjPfLRu3VoRERF1rog4cOCA0tPTLarqzI0ePVrvv/++Fi1apPbt2/va09PTVVFRocLCQr/+tceXnp5e7/hr9jXUJyEhQbGxsYEeTr3Wrl2rgoIC9e3bV5GRkYqMjNSSJUv05z//WZGRkUpLSwubsdZo27atunXr5td24YUXau/evZJO1tzQn9/09HQVFBT47a+qqtKRI0fO6PcSChMmTPDNfvTs2VMjRozQL37xC99MV7iNt7ZQju10fawYe03w2LNnj+bPn+/36PhwGu8nn3yigoICZWVl+f7+2rNnjx5++GF17NjRV2e4jPdchX34iI6O1sUXX6wFCxb42rxerxYsWKCBAwdaWFnjGGM0evRozZ49WwsXLlR2drbf/osvvlhRUVF+49u6dav27t3rG9/AgQO1adMmvz/0NX8J1HzxDRw40O8zavqE8nd03XXXadOmTdqwYYPv1a9fPw0fPtz3PlzGWmPQoEF1Lp3etm2bOnToIEnKzs5Wenq6X70ej0crV670G3NhYaHWrl3r67Nw4UJ5vV4NGDDA12fp0qWqrKz09Zk/f766dOmiVq1aBW18pyopKZHT6f/XTkREhLxer6TwG29toRxbU/kzXhM8tm/frv/85z9KSUnx2x9O4x0xYoQ+//xzv7+/MjIyNGHCBM2bN89XZ7iM95xZveI1FGbNmmVcLpeZPn262bJli3nggQdMUlKS3xURTdVPf/pTk5iYaBYvXmy+/fZb36ukpMTX56GHHjJZWVlm4cKFZs2aNWbgwIFm4MCBvv01l59ef/31ZsOGDWbu3LmmTZs29V5+OmHCBPPll1+aF1980dJLbWvUvtrFmPAb66pVq0xkZKR5+umnzfbt283rr79u4uLizL/+9S9fnylTppikpCTz7rvvms8//9zccsst9V6e2adPH7Ny5UqzbNky07lzZ7/L9woLC01aWpoZMWKE2bx5s5k1a5aJi4sL+aW2I0eONO3atfNdavvOO++Y1q1bm1/96ldhMd6ioiKzfv16s379eiPJPPfcc2b9+vW+qztCNbZPP/3UREZGmj/84Q/myy+/NI8//nhQLsVsaLwVFRXm5ptvNu3btzcbNmzw+/ur9pUc4TLe+px6tUtzG28w2SJ8GGPMCy+8YLKyskx0dLTp37+/WbFihdUlNYqkel+vvvqqr09paan52c9+Zlq1amXi4uLM97//ffPtt9/6fc7u3bvNkCFDTGxsrGndurV5+OGHTWVlpV+fRYsWmYsuushER0eb8847z+8YVjk1fITjWP/973+bHj16GJfLZbp27Wr+9re/+e33er1m8uTJJi0tzbhcLnPdddeZrVu3+vU5fPiwueuuu0zLli1NQkKCuffee01RUZFfn40bN5rLL7/cuFwu065dOzNlypSgj+1UHo/HjB071mRlZZmYmBhz3nnnmV//+td+X0bNebyLFi2q97/XkSNHhnxsb731lrngggtMdHS06d69u/nggw9COt5du3ad9u+vRYsWhd1461Nf+GhO4w0mhzG1bi0IAAAQZGG/5gMAADQthA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBShA8AABBS/x+x7fxa8dxlJAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "weights,w_log=stocGradAscent1(np.array(dataArr),labelMat)\n",
    "w_log = np.array(w_log)\n",
    "plt.plot(range(w_log.shape[0]),w_log[:,0])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f253d781f90>]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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yDIMRIiIiMgyDESIiIjIMkEZiMycORPNmjVDZGQkevXqhbVr11rdJLdmzJiBHj16ICYmBg0bNsRVV12F3bt3q7YpLCzE+PHjUb9+fdStWxfXXHMNjh8/rtomKysLo0aNQnR0NBo2bIiJEyeitLRUtc3ixYvRtWtX2O12tGzZErNnzzZ799x6/vnnYbPZMGHCBPm+2ri/R44cwS233IL69esjKioKHTp0wPr16+XHhRCYOnUqGjVqhKioKGRkZGDPnj2q1zhz5gxuvvlmxMbGIj4+HnfccQfOnTun2mbLli0YMGAAIiMjkZaWhhdffDEg+6dUVlaGJ598Es2bN0dUVBRatGiBZ555RrU2RU3e36VLl+Lyyy9HSkoKbDYbvv/+e9Xjgdy3r776Cm3atEFkZCQ6dOiAuXPnBnR/S0pK8Nhjj6FDhw6oU6cOUlJS8Pe//x1Hjx6tlfurNW7cONhsNrz22muq+2vS/ppKBJk5c+aIiIgI8cEHH4jt27eLu+66S8THx4vjx49b3TSXhg8fLj788EOxbds2kZmZKS677DLRpEkTce7cOXmbcePGibS0NLFgwQKxfv160bt3b9G3b1/58dLSUtG+fXuRkZEhNm3aJObOnSsSExPF5MmT5W32798voqOjxcMPPyx27Ngh3njjDREaGirmzZsX0P1VWrt2rWjWrJno2LGjePDBB+X7a9v+njlzRjRt2lTcdtttYs2aNWL//v3it99+E3v37pW3ef7550VcXJz4/vvvxebNm8UVV1whmjdvLi5cuCBvM2LECNGpUyexevVqsWzZMtGyZUtx4403yo/n5uaKpKQkcfPNN4tt27aJzz//XERFRYl33nknoPs7ffp0Ub9+ffHzzz+LAwcOiK+++krUrVtXvP7667Vif+fOnSumTJkivv32WwFAfPfdd6rHA7VvK1asEKGhoeLFF18UO3bsEE888YQIDw8XW7duDdj+5uTkiIyMDPHFF1+IXbt2iVWrVomePXuKbt26qV6jtuyv0rfffis6deokUlJSxL///e8au79mCrpApGfPnmL8+PHy7bKyMpGSkiJmzJhhYau8d+LECQFALFmyRAhR/kUPDw8XX331lbzNzp07BQCxatUqIUT5FyckJERkZ2fL28yaNUvExsaKoqIiIYQQjz76qGjXrp3qva6//noxfPhws3dJV35+vmjVqpWYP3++GDRokByI1Mb9feyxx0T//v0NH3c4HCI5OVm89NJL8n05OTnCbreLzz//XAghxI4dOwQAsW7dOnmbX3/9VdhsNnHkyBEhhBBvvfWWqFevnvwZSO/dunVrf++SS6NGjRL/+Mc/VPddffXV4uabbxZC1K791Z6oArlv1113nRg1apSqPb169RL33HOPX/dRydWJWbJ27VoBQBw6dEgIUTv396+//hKNGzcW27ZtE02bNlUFIjV5f/0tqIZmiouLsWHDBmRkZMj3hYSEICMjA6tWrbKwZd7Lzc0FACQkJAAANmzYgJKSEtW+tWnTBk2aNJH3bdWqVejQoQOSkpLkbYYPH468vDxs375d3kb5GtI2Vn0+48ePx6hRo5zaVBv398cff0T37t0xZswYNGzYEF26dMF7770nP37gwAFkZ2er2hsXF4devXqp9jk+Ph7du3eXt8nIyEBISAjWrFkjbzNw4EBERETI2wwfPhy7d+/G2bNnzd5NWd++fbFgwQL8+eefAIDNmzdj+fLlGDlyJIDat79Kgdy36vQ3rpSbmwubzYb4+HgAtW9/HQ4Hxo4di4kTJ6Jdu3ZOj9e2/fVFUAUip06dQllZmerEBABJSUnIzs62qFXeczgcmDBhAvr164f27dsDALKzsxERESF/qSXKfcvOztbdd+kxV9vk5eXhwoULZuyOoTlz5mDjxo2YMWOG02O1cX/379+PWbNmoVWrVvjtt99w77334oEHHsBHH32karOrv9/s7Gw0bNhQ9XhYWBgSEhK8+lwCYdKkSbjhhhvQpk0bhIeHo0uXLpgwYQJuvvlmVVtqy/4qBXLfjLax8phXWFiIxx57DDfeeKO8wFtt298XXngBYWFheOCBB3Qfr23764tqvfou6Rs/fjy2bduG5cuXW90U0xw+fBgPPvgg5s+fj8jISKubExAOhwPdu3fHc889BwDo0qULtm3bhrfffhu33nqrxa3zvy+//BKffvopPvvsM7Rr1w6ZmZmYMGECUlJSauX+UrmSkhJcd911EEJg1qxZVjfHFBs2bMDrr7+OjRs3wmazWd2cai+oekQSExMRGhrqNLPi+PHjSE5OtqhV3rn//vvx888/Y9GiRUhNTZXvT05ORnFxMXJyclTbK/ctOTlZd9+lx1xtExsbi6ioKH/vjqENGzbgxIkT6Nq1K8LCwhAWFoYlS5bgP//5D8LCwpCUlFSr9hcAGjVqhIsvvlh1X9u2bZGVlQWgss2u/n6Tk5Nx4sQJ1eOlpaU4c+aMV59LIEycOFHuFenQoQPGjh2Lhx56SO4Bq237qxTIfTPaxop9l4KQQ4cOYf78+arl7mvT/i5btgwnTpxAkyZN5OPXoUOH8Mgjj6BZs2ZyO2vL/voqqAKRiIgIdOvWDQsWLJDvczgcWLBgAfr06WNhy9wTQuD+++/Hd999h4ULF6J58+aqx7t164bw8HDVvu3evRtZWVnyvvXp0wdbt25V/fFLBwPpBNinTx/Va0jbBPrzGTp0KLZu3YrMzEz5p3v37rj55pvl32vT/gJAv379nKZk//nnn2jatCkAoHnz5khOTla1Ny8vD2vWrFHtc05ODjZs2CBvs3DhQjgcDvTq1UveZunSpSgpKZG3mT9/Plq3bo169eqZtn9a58+fR0iI+hAUGhoKh8MBoPbtr1Ig9626/I1LQciePXvwxx9/oH79+qrHa9P+jh07Flu2bFEdv1JSUjBx4kT89ttvcjtry/76zOps2UCbM2eOsNvtYvbs2WLHjh3i7rvvFvHx8aqZFdXRvffeK+Li4sTixYvFsWPH5J/z58/L24wbN040adJELFy4UKxfv1706dNH9OnTR35cms46bNgwkZmZKebNmycaNGigO5114sSJYufOnWLmzJmWT9+VKGfNCFH79nft2rUiLCxMTJ8+XezZs0d8+umnIjo6WnzyySfyNs8//7yIj48XP/zwg9iyZYu48sordad8dunSRaxZs0YsX75ctGrVSjUlMCcnRyQlJYmxY8eKbdu2iTlz5ojo6OiAT9+99dZbRePGjeXpu99++61ITEwUjz76aK3Y3/z8fLFp0yaxadMmAUC8+uqrYtOmTfIskUDt24oVK0RYWJh4+eWXxc6dO8W0adNMmd7pan+Li4vFFVdcIVJTU0VmZqbqGKacEVJb9lePdtZMTdtfMwVdICKEEG+88YZo0qSJiIiIED179hSrV6+2ukluAdD9+fDDD+VtLly4IO677z5Rr149ER0dLUaPHi2OHTumep2DBw+KkSNHiqioKJGYmCgeeeQRUVJSotpm0aJFonPnziIiIkKkp6er3sNK2kCkNu7vTz/9JNq3by/sdrto06aNePfdd1WPOxwO8eSTT4qkpCRht9vF0KFDxe7du1XbnD59Wtx4442ibt26IjY2Vtx+++0iPz9ftc3mzZtF//79hd1uF40bNxbPP/+86fumlZeXJx588EHRpEkTERkZKdLT08WUKVNUJ6aavL+LFi3S/c7eeuutAd+3L7/8Ulx00UUiIiJCtGvXTvzyyy8B3d8DBw4YHsMWLVpU6/ZXj14gUpP210w2IRRlDImIiIgCKKhyRIiIiKh6YSBCRERElmEgQkRERJZhIEJERESWYSBCRERElmEgQkRERJZhIEJERESWYSBCRERElmEgQkRERJZhIEJERESWYSBCRERElmEgQkRERJb5fziJEvvBPn6OAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(w_log.shape[0]),w_log[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f253d7a78e0>]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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SSxOBgCg5hBUrJBIAADwOYIKAACwLYIKAACwLYKKFYfFcYaEAACoMQQVAABgWwQVAABgWwQVAABgWwSVSuqYGOnrKgAAcNHw93UFaptpV7VV4/rBuqpjgq+rAgBAnUdQqaSI4ABNHNzK19UAAOCiwNAPAACwLYKKFfZLAQDA5wgqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqAADAtggqFthBHwAA3yOoAAAA2yKoAAAA2yKoWHD4ugIAAICgAgAA7IugAgAAbIugAgAAbIugAgAAbIugAgAAbIugAgAAbIugAgAAbIugYoEt9AEA8D2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CCgAAsC2CigXD4Go/AAD4GkEFAADYFkHFgsPh8HUVAAC46BFUAACAbRFUAACAbRFUAACAbRFUAACAbRFUAACAbVVbUJk+fbp69eqlkJAQRUZGei3jcDhK3d55553qqhIAAKhl/KvrxDk5ObrhhhuUlpam1157zbLcnDlzNHToUPN7q1ADAAAuPtUWVJ544glJ0ty5c8ssFxkZqfj4+OqqBgAAqMV8Pkdl/Pjxio6OVvfu3fX666+Xu3V9dna2srKyPG7VgS30AQDwvWrrUamIJ598UpdddplCQkL0+eef65577tGpU6d03333WT5mxowZZm8NAACo2yrVozJlyhSvE2Ddb1u2bKnw+R599FH17t1bnTp10kMPPaQHH3xQzzzzTJmPmTp1qjIzM83b/v37K9MEAABQi1SqR2XSpEkaM2ZMmWWaNWt23pXp0aOHnnrqKWVnZ8vlcnkt43K5LO8DAAB1S6WCSkxMjGJiYqqrLlq7dq3q169PEAEAAJKqcY7Kvn37dPz4ce3bt0/5+flau3atJCklJUX16tXTxx9/rIyMDPXs2VNBQUFasGCBnn76af32t7+trioBAIBaptqCymOPPaY33njD/L5Tp06SpMWLF6t///4KCAjQSy+9pAkTJsgwDKWkpGj27NkaO3ZsdVUJAADUMg6jlq/DzcrKUkREhDIzMxUeHl5l5+3/zGLt+fGMJGnPzBFVdl4AAFDx92+f76MCAABghaACAABsi6ACAABsi6BioVZP3AEAoI4gqAAAANsiqFhw+LoCAACAoAIAAOyLoAIAAGyLoAIAAGyLoAIAAGyLoAIAAGyLoAIAAGyLoAIAAGyLoAIAAGyLoGKBLfQBAPA9ggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtgooFw/B1DQAAAEEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkEFAADYFkHFgiH20AcAwNcIKgAAwLYIKhYccvi6CgAAXPQIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKgAAwLYIKhbYQh8AAN+rtqCyZ88e3X777WratKmCg4PVvHlzTZs2TTk5OR7lfvjhB/Xp00dBQUFKTEzUrFmzqqtKAACglvGvrhNv2bJFBQUF+stf/qKUlBRt2LBBY8eO1enTp/Xss89KkrKysjR48GANGjRIr776qtavX6/bbrtNkZGRuvPOO6uragAAoJaotqAydOhQDR061Py+WbNm2rp1q1555RUzqLz11lvKycnR66+/rsDAQLVt21Zr167V7NmzCSoAAKBm56hkZmYqKirK/H758uXq27evAgMDzWNDhgzR1q1b9dNPP3k9R3Z2trKysjxuAACgbqqxoLJjxw69+OKLuuuuu8xj6enpiouL8yhX9H16errX88yYMUMRERHmLTExsfoqDQAAfKrSQWXKlClyOBxl3rZs2eLxmIMHD2ro0KG64YYbNHbs2Auq8NSpU5WZmWne9u/ff0HnAwAA9lXpOSqTJk3SmDFjyizTrFkz8+tDhw5pwIAB6tWrl/761796lIuPj1dGRobHsaLv4+PjvZ7b5XLJ5XJVttoAAKAWqnRQiYmJUUxMTIXKHjx4UAMGDFCXLl00Z84cOZ2eHThpaWl6+OGHlZubq4CAAEnSggUL1KpVK9WvX7+yVQMAAHVMtc1ROXjwoPr376+kpCQ9++yzOnr0qNLT0z3mnvzqV79SYGCgbr/9dm3cuFHvvvuuXnjhBU2cOLG6qgUAAGqRaluevGDBAu3YsUM7duxQ48aNPe4zjMJdXyMiIvT5559r/Pjx6tKli6Kjo/XYY4+xNBkAAEiSHEZRaqilsrKyFBERoczMTIWHh1fZeS/9wxc68NNZSdKemSOq7LwAAKDi799c6wcAANgWQcWCw+HrGgAAAIIKAACwLYIKAACwLYIKAACwLYIKAACwLYIKAACwLYIKAACwLYIKAACwLYIKAACwLYIKAACwLYKKhdp9BSQAAOoGggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtggoAALAtgoqF/q1iJEkxYS4f1wQAgIuXv68rYFe/G95areLDNah1rK+rAgDARYugYiEk0F+jejbxdTUAALioMfQDAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsi6ACAABsq9ZfPdkwDElSVlaWj2sCAAAqquh9u+h93EqtDyonT56UJCUmJvq4JgAAoLJOnjypiIgIy/sdRnlRxuYKCgp06NAhhYWFyeFwVOm5s7KylJiYqP379ys8PLxKz21HtLduo711G+2t2+piew3D0MmTJ5WQkCCn03omSq3vUXE6nWrcuHG1Pkd4eHid+cOoCNpbt9Heuo321m11rb1l9aQUYTItAACwLYIKAACwLYJKGVwul6ZNmyaXy+XrqtQI2lu30d66jfbWbRdbe93V+sm0AACg7qJHBQAA2BZBBQAA2BZBBQAA2BZBBQAA2BZBxcJLL72k5ORkBQUFqUePHlq5cqWvq1SuGTNmqFu3bgoLC1NsbKyuueYabd261aPMuXPnNH78eDVo0ED16tXTL37xC2VkZHiU2bdvn0aMGKGQkBDFxsZq8uTJysvL8yizZMkSde7cWS6XSykpKZo7d251N69cM2fOlMPh0AMPPGAeq2vtPXjwoH7961+rQYMGCg4OVrt27fT999+b9xuGoccee0wNGzZUcHCwBg0apO3bt3uc4/jx4xo5cqTCw8MVGRmp22+/XadOnfIo88MPP6hPnz4KCgpSYmKiZs2aVSPtc5efn69HH31UTZs2VXBwsJo3b66nnnrK47ogtb29X375pa688kolJCTI4XDoo48+8ri/Jtv3/vvvKzU1VUFBQWrXrp3mzZtXo+3Nzc3VQw89pHbt2ik0NFQJCQm65ZZbdOjQoTrZ3pLGjRsnh8Oh559/3uN4bWpvtTFQyjvvvGMEBgYar7/+urFx40Zj7NixRmRkpJGRkeHrqpVpyJAhxpw5c4wNGzYYa9euNYYPH24kJSUZp06dMsuMGzfOSExMNBYtWmR8//33Rs+ePY1evXqZ9+fl5RmXXHKJMWjQIGPNmjXGvHnzjOjoaGPq1KlmmV27dhkhISHGxIkTjU2bNhkvvvii4efnZ8yfP79G2+tu5cqVRnJystG+fXvj/vvvN4/XpfYeP37caNKkiTFmzBhjxYoVxq5du4zPPvvM2LFjh1lm5syZRkREhPHRRx8Z69atM6666iqjadOmxtmzZ80yQ4cONTp06GB8++23xldffWWkpKQYN998s3l/ZmamERcXZ4wcOdLYsGGD8fbbbxvBwcHGX/7ylxpt7/Tp040GDRoYn3zyibF7927j/fffN+rVq2e88MILdaa98+bNMx5++GHjgw8+MCQZH374ocf9NdW+r7/+2vDz8zNmzZplbNq0yXjkkUeMgIAAY/369TXW3hMnThiDBg0y3n33XWPLli3G8uXLje7duxtdunTxOEddaa+7Dz74wOjQoYORkJBgPPfcc7W2vdWFoOJF9+7djfHjx5vf5+fnGwkJCcaMGTN8WKvKO3LkiCHJWLp0qWEYhS8EAQEBxvvvv2+W2bx5syHJWL58uWEYhf9YTqfTSE9PN8u88sorRnh4uJGdnW0YhmE8+OCDRtu2bT2e66abbjKGDBlS3U3y6uTJk0aLFi2MBQsWGP369TODSl1r70MPPWRceumllvcXFBQY8fHxxjPPPGMeO3HihOFyuYy3337bMAzD2LRpkyHJ+O6778wyn376qeFwOIyDBw8ahmEYL7/8slG/fn2z/UXP3apVq6puUplGjBhh3HbbbR7HrrvuOmPkyJGGYdS99pZ8I6vJ9t14443GiBEjPOrTo0cP46677qrSNror6427yMqVKw1Jxt69ew3DqJvtPXDggNGoUSNjw4YNRpMmTTyCSm1ub1Vi6KeEnJwcrVq1SoMGDTKPOZ1ODRo0SMuXL/dhzSovMzNTkhQVFSVJWrVqlXJzcz3alpqaqqSkJLNty5cvV7t27RQXF2eWGTJkiLKysrRx40azjPs5isr46uczfvx4jRgxolSd6lp7//vf/6pr16664YYbFBsbq06dOulvf/ubef/u3buVnp7uUdeIiAj16NHDo72RkZHq2rWrWWbQoEFyOp1asWKFWaZv374KDAw0ywwZMkRbt27VTz/9VN3NNPXq1UuLFi3Stm3bJEnr1q3TsmXLNGzYMEl1r70l1WT77PI3XlJmZqYcDociIyMl1b32FhQUaNSoUZo8ebLatm1b6v661t7zRVAp4dixY8rPz/d445KkuLg4paen+6hWlVdQUKAHHnhAvXv31iWXXCJJSk9PV2BgoPlPX8S9benp6V7bXnRfWWWysrJ09uzZ6miOpXfeeUerV6/WjBkzSt1X19q7a9cuvfLKK2rRooU+++wz3X333brvvvv0xhtveNS3rL/d9PR0xcbGetzv7++vqKioSv1MasKUKVP0y1/+UqmpqQoICFCnTp30wAMPaOTIkR51qSvtLakm22dVxpftP3funB566CHdfPPN5kX46lp7//CHP8jf31/33Xef1/vrWnvPV62/ejK8Gz9+vDZs2KBly5b5uirVZv/+/br//vu1YMECBQUF+bo61a6goEBdu3bV008/LUnq1KmTNmzYoFdffVWjR4/2ce2q3nvvvae33npL//rXv9S2bVutXbtWDzzwgBISEupke1EsNzdXN954owzD0CuvvOLr6lSLVatW6YUXXtDq1avlcDh8XR1bo0elhOjoaPn5+ZVaGZKRkaH4+Hgf1apy7r33Xn3yySdavHixGjdubB6Pj49XTk6OTpw44VHevW3x8fFe2150X1llwsPDFRwcXNXNsbRq1SodOXJEnTt3lr+/v/z9/bV06VL96U9/kr+/v+Li4upUexs2bKg2bdp4HGvdurX27dtn1rOobu5KtvfIkSMe9+fl5en48eOV+pnUhMmTJ5u9Ku3atdOoUaM0YcIEs/esrrW3pJpsn1UZX7S/KKTs3btXCxYsMHtTpLrV3q+++kpHjhxRUlKS+fq1d+9eTZo0ScnJyWY960p7LwRBpYTAwEB16dJFixYtMo8VFBRo0aJFSktL82HNymcYhu699159+OGH+uKLL9S0aVOP+7t06aKAgACPtm3dulX79u0z25aWlqb169d7/HMUvVgUvUmmpaV5nKOoTE3/fAYOHKj169dr7dq15q1r164aOXKk+XVdam/v3r1LLTfftm2bmjRpIklq2rSp4uPjPeqalZWlFStWeLT3xIkTWrVqlVnmiy++UEFBgXr06GGW+fLLL5Wbm2uWWbBggVq1aqX69etXW/tKOnPmjJxOz5coPz8/FRQUSKp77S2pJttnl7/xopCyfft2LVy4UA0aNPC4vy61d9SoUfrhhx88Xr8SEhI0efJkffbZZ2Y960p7L4ivZ/Pa0TvvvGO4XC5j7ty5xqZNm4w777zTiIyM9FgZYkd33323ERERYSxZssQ4fPiweTtz5oxZZty4cUZSUpLxxRdfGN9//72RlpZmpKWlmfcXLdcdPHiwsXbtWmP+/PlGTEyM1+W6kydPNjZv3my89NJLPl+eXMR91Y9h1K32rly50vD39zemT59ubN++3XjrrbeMkJAQ48033zTLzJw504iMjDT+85//GD/88INx9dVXe13O2qlTJ2PFihXGsmXLjBYtWngsdzxx4oQRFxdnjBo1ytiwYYPxzjvvGCEhITW+PHn06NFGo0aNzOXJH3zwgREdHW08+OCDdaa9J0+eNNasWWOsWbPGkGTMnj3bWLNmjbnKpaba9/XXXxv+/v7Gs88+a2zevNmYNm1atSxfLau9OTk5xlVXXWU0btzYWLt2rcdrmPuKlrrSXm9Krvqpbe2tLgQVCy+++KKRlJRkBAYGGt27dze+/fZbX1epXJK83ubMmWOWOXv2rHHPPfcY9evXN0JCQoxrr73WOHz4sMd59uzZYwwbNswIDg42oqOjjUmTJhm5ubkeZRYvXmx07NjRCAwMNJo1a+bxHL5UMqjUtfZ+/PHHxiWXXGK4XC4jNTXV+Otf/+pxf0FBgfHoo48acXFxhsvlMgYOHGhs3brVo8yPP/5o3HzzzUa9evWM8PBw49ZbbzVOnjzpUWbdunXGpZdearhcLqNRo0bGzJkzq71tJWVlZRn333+/kZSUZAQFBRnNmjUzHn74YY83rdre3sWLF3v9nx09enSNt++9994zWrZsaQQGBhpt27Y1/ve//9Voe3fv3m35GrZ48eI6115vvAWV2tTe6uIwDLdtHgEAAGyEOSoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2CCoAAMC2/h/79DBLHKzfmgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(w_log.shape[0]),w_log[:,2])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
